package com.bnd.service;

import com.bnd.domain.session.ChatSession;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;

/**
 * 角色对话服务接口
 */
public interface RoleChatService {
    
    /**
     * 执行流式对话
     * @param userInput 用户输入
     * @param chatSession 聊天会话
     * @return SSE流式响应
     */
    SseEmitter doStreamChat(String userInput, ChatSession chatSession);

    /**
     * 关闭聊天会话
     * @param removedSession 要关闭的会话
     */
    void closeChatSession(ChatSession removedSession);

    /**
     * 流式对话（延迟关闭SSE）：文本完成后由调用方决定何时complete
     * 返回一个句柄，包含SseEmitter与文本完成的Future（内容为完整回复）
     * @param userInput 用户输入
     * @param chatSession 聊天会话
     * @return 流式对话句柄
     */
    com.bnd.service.StreamChatHandle doStreamChatDeferComplete(String userInput, ChatSession chatSession);
}
